1Writer タスクを翌日に移動2
2025/2/17
前日までのタスクは今日に移動
今日または翌日のタスクは次の日に移動
⚠️複数行選択した時、一番上の行以外がコピーされず、削除だけされる
code:js
var dir = 'Dropbox/vault/private/notes/';
// 1. カーソル行のテキストを取得
const cursorRange = editor.getSelectedLineRange();
const cursorLineText = editor.getTextInRange(cursorRange0, cursorRange1); let newTask = cursorLineText.trim();
// 空行または無効なタスクの場合は処理を終了
if (!newTask) {
ui.hudError("タスクが選択されていません");
return;
}
// 2. カーソル行の削除(改行も含めて削除)
editor.replaceTextInRange(start, end + 1, "");
editor.setSelectedRange(start);
// 3. 現在のノートのファイル名から日付を取得
const fileName = editor.getFileName();
const dateMatch = fileName.match(/(\d{4})-(\d{2})-(\d{2})/);
if (!dateMatch) {
ui.hudError("ファイル名から日付を取得できませんでした。");
return;
}
// 移動元の日付を取得
let year = parseInt(dateMatch1, 10); let month = parseInt(dateMatch2, 10) - 1; // JavaScriptの月は0始まり let day = parseInt(dateMatch3, 10); let currentFileDate = new Date(year, month, day);
// 現在の日付(今日)を取得
let today = new Date();
today.setHours(0, 0, 0, 0); // 時刻をリセット
// 移動先の日付を決定
let targetDate;
if (currentFileDate < today) {
// **過去の日付なら今日に移動**
targetDate = today;
} else {
// **今日または未来なら翌日に移動**
targetDate = new Date(currentFileDate);
targetDate.setDate(targetDate.getDate() + 1);
}
// 移動先の日付をフォーマット
let targetYear = targetDate.getFullYear();
let targetMonth = ("0" + (targetDate.getMonth() + 1)).slice(-2);
let targetDay = ("0" + targetDate.getDate()).slice(-2);
let targetDateString = ${targetYear}-${targetMonth}-${targetDay};
// 4. タスクのフォーマット調整
newTask = formatTask(newTask, dateMatch0); // 5. 移動先のノートファイル名を作成
let targetFileName = ${dir}${targetDateString}.md;
// 6. URLスキームを使って、移動先のノートにタスクを追記
let textToAppend = encodeURIComponent(newTask);
let urlScheme = onewriter://x-callback-url/append?path=${encodeURIComponent(targetFileName)}&text=${textToAppend};
app.openURL(urlScheme);
// 7. 完了ポップアップ
ui.hudSuccess(タスクを ${targetDateString} に移動しました。);
// 8. タスクのフォーマット関数
function formatTask(task, currentDate) {
let match = task.match(/^(\s*- \.\|\s*-|\s*\d+\.)?\s*(.+)/); if (!match) return task;
let prefix = match1 || "-"; taskName = [[${currentDate}]] + taskName;
}
return ${prefix} ${taskName};
}